#pragma once

#include <gst/gst.h>
#include <string>

class GstPipelineBuilder
{
public:
    static GstElement *buildPipelineWithDisplay(const char         *pipeline_name,
                                                GstElement         *streammux,
                                                std::string         nvds_config,
                                                uint32_t            num_sources,
                                                GstPadProbeCallback nvinfer_cb,
                                                void               *nvinfer_args,
                                                GstPadProbeCallback tailer_cb,
                                                void               *tailer_args);
    static GstElement *buildPipeline(const char         *pipeline_name,
                                     GstElement         *streammux,
                                     std::string         nvds_config,
                                     uint32_t            num_sources,
                                     GstPadProbeCallback nvinfer_cb,
                                     void               *nvinfer_args,
                                     GstPadProbeCallback tailer_cb,
                                     void               *tailer_args);
};